home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_AI / AI_126 / PCST046 / DOCS / EMUDTECT.TXT next >
Text File  |  1998-03-14  |  2KB  |  84 lines

  1. ; FOR ST Programmers - How to detect PaCifiST (0.46 of greater)
  2. ;
  3. ; When Vsync is called with D6=D7='Emu?' and those registers are
  4. ; altered, you can assume you're running under an Emulator.
  5. ;
  6. ; If D6='PaCi' & D7='fiST', then it's under PaCifiST and A0 points out
  7. ; some extra hardware registers:
  8. ;
  9. ; 0     BYTE    major version (BCD)
  10. ; 1     BYTE    minor version (BCD)
  11. ;
  12. ; Special registers will be added with each version
  13.  
  14.  
  15.  
  16.         move.l  #'Emu?',d5
  17.         move.l  d5,d7
  18.         move.l  d5,d6
  19.         move    #$25,-(a7)
  20.         trap    #$e
  21.         addq.l  #2,a7
  22.         move.l  a0,regbase
  23.  
  24.         cmp.l   d5,d6
  25.         bne.s   under_emu
  26.         cmp.l   d5,d7
  27.         beq.s   normal_st
  28. under_emu:
  29.         cmp.l  #'PaCi',d6
  30.         bne.s  other_emu
  31.         cmp.l  #'fiST',d7
  32.         bne.s  other_emu
  33.  
  34.         pea     super(pc)
  35.         move.w  #$26,-(a7)
  36.         trap    #$e
  37.         addq.l  #6,a7
  38.         lea     pacifist_emu(pc),a0
  39.         bra.s   print
  40. other_emu:
  41.         lea     an_emu(pc),a0
  42.     bra.s    print
  43. normal_st:
  44.         lea     no_emu(pc),a0
  45. print:
  46.         pea     (a0)
  47.         move    #9,-(a7)
  48.         trap    #1
  49.         addq.l  #6,a7
  50.         move    #1,-(a7)
  51.         trap    #1
  52.         addq.l  #2,a7
  53.         clr.w   -(a7)
  54.         trap    #1
  55.  
  56. super:
  57.         move.l  regbase(pc),a0
  58.         move.b  (a0),d0
  59.         add.b   d0,majorv
  60.         move.b  1(a0),d0
  61.         move    d0,d1
  62.         lsr     #4,d1
  63.         and     #$f,d0
  64.         and     #$f,d1
  65.         add.b   d1,minorv
  66.         add.b   d0,minorv+1
  67.         rts
  68.  
  69.     SECTION DATA
  70.  
  71. regbase    dc.l    0
  72.  
  73. no_emu:
  74.         dc.b    "It seems you're running under a",13,10
  75.         dc.b    "mere ST.",0
  76. an_emu:
  77.         dc.b    "It seems you're running under an",13,10
  78.         dc.b    "emulator.",0
  79. pacifist_emu:
  80.         dc.b    "You're running under PaCifiST",13,10,"v"
  81. majorv: dc.b    "0."
  82. minorv: dc.b    "00.",0
  83.  
  84.